package com.itheima.controller;

import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * Description:
 * @author codermao
 * @date 2023/11/5 20:17
 * <p>
 * <p>
 *  TODO:特殊情况
 *
 *      1）前端请求参数名和后端不一致
 *       @RequestParam("name") ： 参数中指定前端参数名
 *      2）请求参数包含中文
 *           1.tomcat8没有get请求乱码，但是有post乱码
 *           2.思路：CharacterEncodingFilter  编码过滤器
 *                   这个过滤器拦截所有请求路径 /*，截获所有请求
 *                   如果是post请求方式，那么request.setCharacterEncoding("utf-8");
 *           3.解决：在ServletContainersInitConfig设置CharacterEncodingFilter
 *      3）日期处理
 *          1）前端传递的日期数据对后端来说就是string，如果需要转换成Date类型
 *          2）解决：@DateTimeFormat(pattern = "yyyy-MM-dd")
 */
@Controller
public class UserController3 {
    //普通参数：请求参数与形参名称对应即可完成参数传递
    @RequestMapping("/commonParam3")
    @ResponseBody
    public String commonParam(@RequestParam("name") String userName, int age) {
        System.out.println("普通参数传递 name ==> " + userName);
        System.out.println("普通参数传递 age ==> " + age);
        return "hello";
    }

    @RequestMapping("/dateParam")
    @ResponseBody
    public String dateParam(String birth) throws ParseException {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date date = sdf.parse(birth);
        System.out.println(date);
        System.out.println("普通参数传递 birth ==> " + birth);
        System.out.println(date);
        return "hello";
    }

    @RequestMapping("/dateParam2")
    @ResponseBody
    public String dateParam(@DateTimeFormat(pattern = "yyyy-MM-dd") Date birth) {
        System.out.println("普通参数传递 birth ==> " + birth);
        return "hello";
    }

}
